{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9916bb94-3b2c-4fca-8420-3def96061312",
   "metadata": {},
   "source": [
    "# 处理excel文件\n",
    "\n",
    "一个excel文件就是一个工作簿，一个工作簿中有一个或多个工作表。\n",
    "\n",
    "- xls文件使用 `xlrd` `xlwt` `xlutils` （不建议使用，处理xls建议先另存为xlsx）\n",
    "- xlsx文件使用 `openpyxl` `pandas`"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7238d14a-3f96-401d-8da5-b9251c04fba1",
   "metadata": {},
   "source": [
    "## xls文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "70a28114-d9a2-43c0-b944-d4928baf742b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting xlwt\n",
      "  Downloading xlwt-1.3.0-py2.py3-none-any.whl.metadata (3.5 kB)\n",
      "Collecting xlrd\n",
      "  Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)\n",
      "Collecting xlutils\n",
      "  Downloading xlutils-2.0.0-py2.py3-none-any.whl.metadata (3.4 kB)\n",
      "Downloading xlwt-1.3.0-py2.py3-none-any.whl (99 kB)\n",
      "Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)\n",
      "Downloading xlutils-2.0.0-py2.py3-none-any.whl (55 kB)\n",
      "Installing collected packages: xlwt, xlrd, xlutils\n",
      "\n",
      "   ---------------------------------------- 0/3 [xlwt]\n",
      "   ------------- -------------------------- 1/3 [xlrd]\n",
      "   -------------------------- ------------- 2/3 [xlutils]\n",
      "   ---------------------------------------- 3/3 [xlutils]\n",
      "\n",
      "Successfully installed xlrd-2.0.2 xlutils-2.0.0 xlwt-1.3.0\n"
     ]
    }
   ],
   "source": [
    "# !pip install xlwt xlrd xlutils"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cce8fb59-cd18-40b6-bffa-bda516507704",
   "metadata": {},
   "source": [
    "### 读取文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e608ff79-34c7-41c4-a201-60df5d85a488",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['股票数据', 'Sheet3']\n",
      "255 7\n",
      "Date\tHigh\tLow\tOpen\tClose\tVolume\tAdj Close\t\n",
      "2019年12月31日\t213.64\t210.73\t212.00\t212.10\t6773600.00\t212.10\t\n",
      "2020年01月02日\t219.98\t216.54\t216.60\t219.77\t15873500.00\t219.77\t\n",
      "2020年01月03日\t218.20\t216.01\t216.35\t217.00\t8604500.00\t217.00\t\n",
      "2020年01月06日\t217.16\t214.09\t214.89\t216.64\t11885500.00\t216.64\t\n",
      "2020年01月07日\t218.94\t216.69\t217.64\t217.63\t9388000.00\t217.63\t\n",
      "2020年01月08日\t220.65\t216.32\t216.60\t218.00\t11959100.00\t218.00\t\n",
      "2020年01月09日\t223.08\t220.82\t221.50\t221.78\t13122500.00\t221.78\t\n",
      "2020年01月10日\t225.96\t222.06\t223.90\t223.83\t12296000.00\t223.83\t\n",
      "2020年01月13日\t231.14\t227.04\t228.81\t230.48\t17544800.00\t230.48\t\n",
      "2020年01月14日\t230.18\t224.88\t230.05\t226.49\t17266900.00\t226.49\t\n",
      "2020年01月15日\t227.82\t224.39\t226.65\t225.06\t10743400.00\t225.06\t\n",
      "2020年01月16日\t226.33\t222.73\t226.30\t223.94\t13700500.00\t223.94\t\n",
      "2020年01月17日\t228.00\t225.35\t225.90\t227.43\t12956200.00\t227.43\t\n",
      "2020年01月21日\t222.60\t220.73\t222.45\t222.26\t15831100.00\t222.26\t\n",
      "2020年01月22日\t225.58\t222.00\t224.69\t222.37\t10059600.00\t222.37\t\n",
      "2020年01月23日\t220.13\t216.77\t217.93\t219.13\t18519900.00\t219.13\t\n",
      "2020年01月24日\t219.83\t211.32\t218.49\t213.75\t18143900.00\t213.75\t\n",
      "2020年01月27日\t208.02\t199.50\t201.22\t205.47\t24574700.00\t205.47\t\n",
      "2020年01月28日\t210.91\t207.17\t209.74\t210.23\t16196700.00\t210.23\t\n",
      "2020年01月29日\t213.98\t209.52\t212.56\t212.02\t12871900.00\t212.02\t\n",
      "2020年01月30日\t209.86\t205.03\t207.88\t208.58\t14376000.00\t208.58\t\n",
      "2020年01月31日\t207.93\t204.73\t206.50\t206.59\t18181400.00\t206.59\t\n",
      "2020年02月03日\t215.02\t208.67\t208.67\t213.10\t14118800.00\t213.10\t\n",
      "2020年02月04日\t224.38\t220.49\t221.35\t222.88\t16695100.00\t222.88\t\n",
      "2020年02月05日\t226.70\t217.54\t226.52\t220.22\t15766100.00\t220.22\t\n",
      "2020年02月06日\t223.65\t219.78\t223.13\t220.90\t10790800.00\t220.90\t\n",
      "2020年02月07日\t217.84\t214.88\t217.46\t216.53\t13790300.00\t216.53\t\n",
      "2020年02月10日\t215.77\t212.20\t213.50\t215.77\t17420300.00\t215.77\t\n",
      "2020年02月11日\t220.01\t215.29\t219.91\t217.21\t16073500.00\t217.21\t\n",
      "2020年02月12日\t225.52\t220.21\t221.13\t224.31\t18671900.00\t224.31\t\n",
      "2020年02月13日\t225.00\t218.99\t220.00\t220.36\t28069700.00\t220.36\t\n",
      "2020年02月14日\t221.64\t218.23\t221.10\t219.63\t10690000.00\t219.63\t\n",
      "2020年02月18日\t220.85\t217.51\t218.55\t220.52\t12987000.00\t220.52\t\n",
      "2020年02月19日\t223.56\t220.75\t221.52\t222.14\t10798100.00\t222.14\t\n",
      "2020年02月20日\t222.50\t214.22\t222.50\t218.04\t14950100.00\t218.04\t\n",
      "2020年02月21日\t217.60\t211.56\t217.54\t212.59\t17681200.00\t212.59\t\n",
      "2020年02月24日\t207.28\t202.51\t203.55\t206.16\t19380200.00\t206.16\t\n",
      "2020年02月25日\t209.95\t204.10\t208.51\t205.61\t18132400.00\t205.61\t\n",
      "2020年02月26日\t213.08\t206.79\t206.80\t208.74\t19482100.00\t208.74\t\n",
      "2020年02月27日\t209.97\t201.86\t205.01\t205.03\t22741200.00\t205.03\t\n",
      "2020年02月28日\t208.92\t198.56\t198.98\t208.00\t31251100.00\t208.00\t\n",
      "2020年03月02日\t211.11\t203.76\t208.59\t210.98\t21542200.00\t210.98\t\n",
      "2020年03月03日\t211.39\t202.24\t211.08\t207.41\t20813800.00\t207.41\t\n",
      "2020年03月04日\t212.70\t208.85\t209.49\t211.96\t12474400.00\t211.96\t\n",
      "2020年03月05日\t215.15\t209.14\t210.00\t211.46\t13462900.00\t211.46\t\n",
      "2020年03月06日\t207.00\t201.10\t206.70\t204.64\t21700500.00\t204.64\t\n",
      "2020年03月09日\t199.89\t193.93\t195.62\t197.66\t25502600.00\t197.66\t\n",
      "2020年03月10日\t207.45\t200.80\t205.53\t206.39\t19022600.00\t206.39\t\n",
      "2020年03月11日\t203.10\t196.11\t201.65\t198.91\t18908200.00\t198.91\t\n",
      "2020年03月12日\t190.49\t183.93\t186.50\t185.10\t30247100.00\t185.10\t\n",
      "2020年03月13日\t195.99\t187.81\t194.90\t194.00\t23650500.00\t194.00\t\n",
      "2020年03月16日\t188.00\t174.50\t176.15\t178.85\t26628500.00\t178.85\t\n",
      "2020年03月17日\t189.39\t179.69\t181.26\t184.81\t19276500.00\t184.81\t\n",
      "2020年03月18日\t182.41\t170.00\t176.00\t180.00\t22054200.00\t180.00\t\n",
      "2020年03月19日\t187.25\t177.39\t179.26\t180.88\t20905700.00\t180.88\t\n",
      "2020年03月20日\t188.30\t180.00\t187.74\t181.30\t21006100.00\t181.30\t\n",
      "2020年03月23日\t178.50\t169.95\t175.27\t176.34\t22554700.00\t176.34\t\n",
      "2020年03月24日\t188.80\t181.18\t183.09\t185.75\t20801500.00\t185.75\t\n",
      "2020年03月25日\t195.19\t184.51\t185.82\t188.56\t19605200.00\t188.56\t\n",
      "2020年03月26日\t196.32\t187.60\t188.64\t195.32\t15416800.00\t195.32\t\n",
      "2020年03月27日\t192.74\t188.00\t189.97\t188.59\t13376400.00\t188.59\t\n",
      "2020年03月30日\t191.48\t187.01\t187.48\t191.27\t12254400.00\t191.27\t\n",
      "2020年03月31日\t196.79\t190.60\t192.00\t194.48\t19084800.00\t194.48\t\n",
      "2020年04月01日\t192.87\t185.04\t189.50\t187.56\t17948600.00\t187.56\t\n",
      "2020年04月02日\t191.30\t185.69\t186.08\t188.90\t13412100.00\t188.90\t\n",
      "2020年04月03日\t190.55\t185.41\t190.12\t187.11\t9483100.00\t187.11\t\n",
      "2020年04月06日\t196.88\t192.70\t194.74\t196.45\t13248700.00\t196.45\t\n",
      "2020年04月07日\t201.45\t197.05\t200.05\t198.00\t14934500.00\t198.00\t\n",
      "2020年04月08日\t198.86\t193.88\t198.34\t195.98\t13608000.00\t195.98\t\n",
      "2020年04月09日\t200.35\t193.40\t198.65\t196.37\t17821300.00\t196.37\t\n",
      "2020年04月13日\t200.32\t195.53\t197.40\t199.44\t16117900.00\t199.44\t\n",
      "2020年04月14日\t207.97\t204.25\t204.95\t204.78\t16757100.00\t204.78\t\n",
      "2020年04月15日\t209.15\t201.31\t204.77\t208.17\t10768100.00\t208.17\t\n",
      "2020年04月16日\t213.25\t209.12\t210.53\t212.66\t16353800.00\t212.66\t\n",
      "2020年04月17日\t214.98\t208.85\t214.98\t209.50\t13558500.00\t209.50\t\n",
      "2020年04月20日\t216.10\t209.36\t209.87\t212.13\t19295400.00\t212.13\t\n",
      "2020年04月21日\t212.13\t205.03\t209.90\t207.34\t14107600.00\t207.34\t\n",
      "2020年04月22日\t212.00\t209.21\t212.00\t209.96\t13471100.00\t209.96\t\n",
      "2020年04月23日\t210.56\t203.46\t210.24\t205.24\t20424000.00\t205.24\t\n",
      "2020年04月24日\t206.50\t202.82\t205.89\t204.36\t14673900.00\t204.36\t\n",
      "2020年04月27日\t207.78\t202.03\t207.55\t203.69\t17286800.00\t203.69\t\n",
      "2020年04月28日\t205.19\t199.41\t204.81\t201.15\t17203800.00\t201.15\t\n",
      "2020年04月29日\t207.08\t202.51\t202.93\t206.70\t19117800.00\t206.70\t\n",
      "2020年04月30日\t206.70\t199.29\t206.25\t202.67\t20107400.00\t202.67\t\n",
      "2020年05月01日\t197.38\t192.86\t195.75\t194.48\t22276200.00\t194.48\t\n",
      "2020年05月04日\t195.00\t189.53\t194.76\t191.15\t25709400.00\t191.15\t\n",
      "2020年05月05日\t198.27\t194.20\t196.38\t195.02\t22957200.00\t195.02\t\n",
      "2020年05月06日\t198.91\t194.93\t197.67\t195.17\t18598900.00\t195.17\t\n",
      "2020年05月07日\t198.09\t194.78\t198.00\t196.49\t16164600.00\t196.49\t\n",
      "2020年05月08日\t203.02\t198.68\t199.80\t201.19\t23819700.00\t201.19\t\n",
      "2020年05月11日\t206.64\t202.38\t202.78\t205.40\t17920700.00\t205.40\t\n",
      "2020年05月12日\t208.05\t200.02\t206.95\t200.31\t17826800.00\t200.31\t\n",
      "2020年05月13日\t204.68\t197.98\t203.62\t199.46\t22429700.00\t199.46\t\n",
      "2020年05月14日\t201.77\t194.03\t195.50\t201.30\t20025900.00\t201.30\t\n",
      "2020年05月15日\t204.49\t200.10\t200.70\t203.68\t17209500.00\t203.68\t\n",
      "2020年05月18日\t215.47\t210.37\t212.50\t215.28\t23556600.00\t215.28\t\n",
      "2020年05月19日\t220.59\t215.19\t216.73\t217.20\t21438100.00\t217.20\t\n",
      "2020年05月20日\t221.16\t210.58\t220.00\t216.79\t38324100.00\t216.79\t\n",
      "2020年05月21日\t214.58\t209.53\t211.29\t212.16\t29850700.00\t212.16\t\n",
      "2020年05月22日\t204.88\t198.99\t203.23\t199.70\t51979300.00\t199.70\t\n",
      "2020年05月26日\t206.80\t201.00\t205.94\t201.72\t28683200.00\t201.72\t\n",
      "2020年05月27日\t202.99\t196.75\t202.99\t201.18\t23605400.00\t201.18\t\n",
      "2020年05月28日\t202.37\t197.62\t199.00\t199.49\t18763200.00\t199.49\t\n",
      "2020年05月29日\t207.88\t196.70\t200.00\t207.39\t43179500.00\t207.39\t\n",
      "2020年06月01日\t207.20\t203.94\t205.90\t206.57\t16169700.00\t206.57\t\n",
      "2020年06月02日\t214.57\t207.17\t207.21\t214.33\t22485800.00\t214.33\t\n",
      "2020年06月03日\t218.97\t213.75\t215.60\t218.61\t19999500.00\t218.61\t\n",
      "2020年06月04日\t220.00\t216.32\t217.28\t218.04\t14962400.00\t218.04\t\n",
      "2020年06月05日\t220.59\t218.70\t220.00\t219.55\t11983200.00\t219.55\t\n",
      "2020年06月08日\t220.40\t215.33\t219.60\t219.00\t12731200.00\t219.00\t\n",
      "2020年06月09日\t220.72\t216.20\t216.31\t220.72\t14140100.00\t220.72\t\n",
      "2020年06月10日\t225.00\t220.60\t222.00\t223.68\t13372400.00\t223.68\t\n",
      "2020年06月11日\t219.95\t213.56\t218.00\t215.24\t15560300.00\t215.24\t\n",
      "2020年06月12日\t219.50\t213.88\t218.50\t217.64\t12716500.00\t217.64\t\n",
      "2020年06月15日\t217.72\t212.75\t214.11\t217.03\t17419900.00\t217.03\t\n",
      "2020年06月16日\t224.84\t220.10\t221.00\t222.62\t17212400.00\t222.62\t\n",
      "2020年06月17日\t225.00\t222.50\t224.40\t224.25\t12486700.00\t224.25\t\n",
      "2020年06月18日\t226.03\t222.92\t223.74\t223.54\t10358800.00\t223.54\t\n",
      "2020年06月19日\t226.50\t220.09\t226.38\t220.64\t19545200.00\t220.64\t\n",
      "2020年06月22日\t222.08\t219.45\t220.92\t221.41\t13303600.00\t221.41\t\n",
      "2020年06月23日\t230.23\t224.53\t225.12\t228.75\t18263400.00\t228.75\t\n",
      "2020年06月24日\t231.03\t224.25\t228.30\t226.22\t12159500.00\t226.22\t\n",
      "2020年06月25日\t224.69\t220.87\t224.59\t222.16\t14953100.00\t222.16\t\n",
      "2020年06月26日\t222.26\t213.50\t222.21\t215.71\t19340600.00\t215.71\t\n",
      "2020年06月29日\t216.50\t211.82\t215.03\t215.02\t12333000.00\t215.02\t\n",
      "2020年06月30日\t216.43\t212.89\t215.74\t215.70\t12933800.00\t215.70\t\n",
      "2020年07月01日\t216.55\t214.74\t215.81\t215.95\t11788100.00\t215.95\t\n",
      "2020年07月02日\t225.02\t220.06\t221.85\t223.60\t18128700.00\t223.60\t\n",
      "2020年07月06日\t240.48\t232.82\t233.31\t240.00\t33702900.00\t240.00\t\n",
      "2020年07月07日\t241.30\t236.13\t241.01\t236.51\t16491600.00\t236.51\t\n",
      "2020年07月08日\t258.49\t244.02\t244.86\t257.68\t39922700.00\t257.68\t\n",
      "2020年07月09日\t268.00\t255.91\t265.55\t261.58\t36803900.00\t261.58\t\n",
      "2020年07月10日\t261.90\t255.71\t260.21\t261.01\t20335000.00\t261.01\t\n",
      "2020年07月13日\t265.66\t250.68\t261.45\t251.67\t21568700.00\t251.67\t\n",
      "2020年07月14日\t249.75\t241.23\t246.57\t248.58\t19782600.00\t248.58\t\n",
      "2020年07月15日\t252.50\t246.54\t251.48\t249.21\t12614700.00\t249.21\t\n",
      "2020年07月16日\t245.05\t240.74\t241.77\t242.50\t18032100.00\t242.50\t\n",
      "2020年07月17日\t247.93\t244.48\t246.55\t247.14\t18742400.00\t247.14\t\n",
      "2020年07月20日\t257.67\t252.43\t256.45\t254.81\t19015000.00\t254.81\t\n",
      "2020年07月21日\t261.92\t256.52\t261.21\t257.90\t17120700.00\t257.90\t\n",
      "2020年07月22日\t256.27\t249.60\t255.76\t251.70\t19682200.00\t251.70\t\n",
      "2020年07月23日\t257.66\t248.69\t252.10\t251.88\t25712000.00\t251.88\t\n",
      "2020年07月24日\t249.48\t241.89\t244.96\t249.00\t17221500.00\t249.00\t\n",
      "2020年07月27日\t252.87\t245.81\t247.11\t250.86\t18966900.00\t250.86\t\n",
      "2020年07月28日\t251.65\t248.53\t251.15\t249.05\t9878700.00\t249.05\t\n",
      "2020年07月29日\t254.30\t250.10\t250.34\t252.45\t11493600.00\t252.45\t\n",
      "2020年07月30日\t253.86\t249.62\t251.70\t252.74\t7032900.00\t252.74\t\n",
      "2020年07月31日\t254.40\t248.10\t254.20\t251.02\t12304100.00\t251.02\t\n",
      "2020年08月03日\t260.65\t254.00\t254.02\t257.94\t11530300.00\t257.94\t\n",
      "2020年08月04日\t262.56\t258.82\t260.08\t262.20\t10994500.00\t262.20\t\n",
      "2020年08月05日\t265.98\t261.76\t263.74\t264.91\t10673800.00\t264.91\t\n",
      "2020年08月06日\t265.70\t259.20\t263.42\t265.68\t10359500.00\t265.68\t\n",
      "2020年08月07日\t257.76\t247.57\t257.41\t252.10\t22529600.00\t252.10\t\n",
      "2020年08月10日\t251.75\t246.10\t249.34\t248.13\t13621700.00\t248.13\t\n",
      "2020年08月11日\t252.88\t247.83\t251.29\t248.42\t10681800.00\t248.42\t\n",
      "2020年08月12日\t256.08\t248.68\t249.25\t255.19\t11112300.00\t255.19\t\n",
      "2020年08月13日\t256.97\t252.88\t256.39\t253.72\t8794500.00\t253.72\t\n",
      "2020年08月14日\t255.77\t251.64\t255.49\t253.97\t7876400.00\t253.97\t\n",
      "2020年08月17日\t257.38\t250.09\t253.00\t256.96\t9760000.00\t256.96\t\n",
      "2020年08月18日\t261.42\t256.06\t258.71\t259.20\t13267800.00\t259.20\t\n",
      "2020年08月19日\t261.29\t257.38\t260.89\t260.59\t14096500.00\t260.59\t\n",
      "2020年08月20日\t258.88\t254.18\t256.89\t257.97\t21460800.00\t257.97\t\n",
      "2020年08月21日\t267.43\t258.31\t259.03\t265.80\t25648200.00\t265.80\t\n",
      "2020年08月24日\t276.97\t271.62\t273.24\t276.02\t22475800.00\t276.02\t\n",
      "2020年08月25日\t289.12\t276.04\t278.06\t286.00\t27535500.00\t286.00\t\n",
      "2020年08月26日\t292.48\t284.10\t289.26\t291.96\t19530300.00\t291.96\t\n",
      "2020年08月27日\t290.25\t282.10\t290.17\t284.17\t14805800.00\t284.17\t\n",
      "2020年08月28日\t289.50\t283.57\t285.09\t289.00\t9681500.00\t289.00\t\n",
      "2020年08月31日\t289.19\t283.61\t288.62\t287.03\t13253800.00\t287.03\t\n",
      "2020年09月01日\t298.00\t288.87\t289.20\t298.00\t13797100.00\t298.00\t\n",
      "2020年09月02日\t299.00\t289.79\t299.00\t296.07\t12638600.00\t296.07\t\n",
      "2020年09月03日\t290.73\t278.16\t289.00\t282.50\t16766200.00\t282.50\t\n",
      "2020年09月04日\t283.78\t267.39\t279.60\t281.39\t15885800.00\t281.39\t\n",
      "2020年09月08日\t273.97\t266.59\t270.23\t270.02\t12734000.00\t270.02\t\n",
      "2020年09月09日\t275.64\t270.88\t274.45\t273.15\t9465700.00\t273.15\t\n",
      "2020年09月10日\t277.10\t267.40\t274.90\t267.55\t10676800.00\t267.55\t\n",
      "2020年09月11日\t274.53\t268.12\t272.63\t271.61\t9412800.00\t271.61\t\n",
      "2020年09月14日\t276.29\t271.76\t275.36\t274.10\t7883300.00\t274.10\t\n",
      "2020年09月15日\t279.10\t274.80\t278.00\t277.96\t8291400.00\t277.96\t\n",
      "2020年09月16日\t283.61\t278.00\t281.03\t278.14\t9583500.00\t278.14\t\n",
      "2020年09月17日\t275.90\t272.32\t273.11\t275.72\t8016900.00\t275.72\t\n",
      "2020年09月18日\t277.27\t270.55\t275.98\t272.41\t11753500.00\t272.41\t\n",
      "2020年09月21日\t274.22\t266.40\t269.10\t273.82\t9076400.00\t273.82\t\n",
      "2020年09月22日\t276.32\t270.05\t276.02\t275.29\t9673300.00\t275.29\t\n",
      "2020年09月23日\t277.83\t271.50\t275.40\t272.95\t7353200.00\t272.95\t\n",
      "2020年09月24日\t271.25\t267.33\t267.93\t269.73\t9562100.00\t269.73\t\n",
      "2020年09月25日\t271.81\t264.56\t267.57\t271.09\t11466600.00\t271.09\t\n",
      "2020年09月28日\t278.84\t274.20\t275.53\t276.01\t8761700.00\t276.01\t\n",
      "2020年09月29日\t279.30\t274.90\t275.43\t276.93\t7673300.00\t276.93\t\n",
      "2020年09月30日\t295.00\t283.71\t284.01\t293.98\t24777700.00\t293.98\t\n",
      "2020年10月01日\t295.59\t288.25\t295.26\t290.05\t16304000.00\t290.05\t\n",
      "2020年10月02日\t291.98\t286.51\t286.62\t288.17\t11482800.00\t288.17\t\n",
      "2020年10月05日\t290.00\t284.88\t289.06\t288.27\t17876400.00\t288.27\t\n",
      "2020年10月06日\t296.84\t286.91\t287.41\t292.39\t15860400.00\t292.39\t\n",
      "2020年10月07日\t299.51\t292.87\t297.99\t296.50\t16669300.00\t296.50\t\n",
      "2020年10月08日\t302.30\t295.44\t298.11\t300.54\t15105800.00\t300.54\t\n",
      "2020年10月09日\t302.61\t297.74\t298.55\t299.74\t11442200.00\t299.74\t\n",
      "2020年10月12日\t309.64\t301.29\t303.95\t306.34\t14780100.00\t306.34\t\n",
      "2020年10月13日\t310.01\t303.03\t306.36\t308.78\t10898500.00\t308.78\t\n",
      "2020年10月14日\t309.96\t300.80\t309.00\t301.04\t15157800.00\t301.04\t\n",
      "2020年10月15日\t299.86\t292.61\t293.80\t299.46\t9709900.00\t299.46\t\n",
      "2020年10月16日\t310.00\t302.95\t303.99\t307.31\t12338000.00\t307.31\t\n",
      "2020年10月19日\t313.81\t303.41\t309.89\t305.29\t14107300.00\t305.29\t\n",
      "2020年10月20日\t311.80\t307.06\t307.60\t309.81\t8806100.00\t309.81\t\n",
      "2020年10月21日\t314.00\t307.70\t311.75\t307.97\t11139700.00\t307.97\t\n",
      "2020年10月22日\t311.85\t304.21\t311.46\t306.28\t8008400.00\t306.28\t\n",
      "2020年10月23日\t310.33\t304.06\t307.27\t309.92\t6231400.00\t309.92\t\n",
      "2020年10月26日\t315.46\t303.20\t309.92\t306.87\t9350100.00\t306.87\t\n",
      "2020年10月27日\t319.32\t305.61\t307.75\t317.14\t13175900.00\t317.14\t\n",
      "2020年10月28日\t313.50\t306.00\t313.50\t307.94\t13644500.00\t307.94\t\n",
      "2020年10月29日\t315.58\t308.91\t309.44\t312.56\t11174500.00\t312.56\t\n",
      "2020年10月30日\t310.83\t300.19\t308.55\t304.69\t14918500.00\t304.69\t\n",
      "2020年11月02日\t311.44\t305.39\t310.95\t310.84\t11857600.00\t310.84\t\n",
      "2020年11月03日\t294.28\t280.78\t286.20\t285.57\t58132500.00\t285.57\t\n",
      "2020年11月04日\t299.17\t285.30\t287.79\t295.71\t28791200.00\t295.71\t\n",
      "2020年11月05日\t291.25\t279.60\t289.09\t287.75\t50065200.00\t287.75\t\n",
      "2020年11月06日\t300.89\t289.79\t291.49\t299.95\t25259600.00\t299.95\t\n",
      "2020年11月09日\t304.00\t290.50\t303.77\t290.53\t22559900.00\t290.53\t\n",
      "2020年11月10日\t280.00\t264.33\t279.97\t266.54\t61064000.00\t266.54\t\n",
      "2020年11月11日\t271.92\t261.20\t261.92\t265.65\t41699000.00\t265.65\t\n",
      "2020年11月12日\t271.20\t263.04\t271.04\t264.31\t27119100.00\t264.31\t\n",
      "2020年11月13日\t265.44\t257.17\t264.72\t260.84\t33942800.00\t260.84\t\n",
      "2020年11月16日\t262.57\t257.03\t260.42\t258.31\t20864200.00\t258.31\t\n",
      "2020年11月17日\t260.28\t256.54\t260.28\t256.80\t19739500.00\t256.80\t\n",
      "2020年11月18日\t258.31\t252.55\t257.76\t255.83\t28307100.00\t255.83\t\n",
      "2020年11月19日\t261.40\t253.56\t255.00\t259.89\t20752800.00\t259.89\t\n",
      "2020年11月20日\t272.37\t261.90\t263.97\t270.74\t34178400.00\t270.74\t\n",
      "2020年11月23日\t275.73\t266.41\t274.75\t270.11\t25317100.00\t270.11\t\n",
      "2020年11月24日\t280.61\t272.80\t276.23\t279.96\t20660500.00\t279.96\t\n",
      "2020年11月25日\t279.33\t274.05\t275.70\t277.72\t15229300.00\t277.72\t\n",
      "2020年11月27日\t278.92\t275.67\t278.80\t276.48\t9583200.00\t276.48\t\n",
      "2020年11月30日\t268.97\t262.52\t268.97\t263.36\t30476100.00\t263.36\t\n",
      "2020年12月01日\t265.67\t261.57\t265.47\t264.01\t14573100.00\t264.01\t\n",
      "2020年12月02日\t263.10\t260.11\t262.00\t261.32\t13919700.00\t261.32\t\n",
      "2020年12月03日\t268.60\t263.14\t263.78\t266.91\t15520500.00\t266.91\t\n",
      "2020年12月04日\t271.30\t266.27\t271.02\t267.25\t15527600.00\t267.25\t\n",
      "2020年12月07日\t265.97\t262.60\t265.70\t264.00\t11388700.00\t264.00\t\n",
      "2020年12月08日\t268.40\t263.87\t265.20\t266.09\t9447700.00\t266.09\t\n",
      "2020年12月09日\t267.91\t263.10\t267.56\t263.80\t9060700.00\t263.80\t\n",
      "2020年12月10日\t266.09\t261.20\t261.99\t264.87\t10290300.00\t264.87\t\n",
      "2020年12月11日\t265.32\t262.50\t264.29\t264.54\t7771300.00\t264.54\t\n",
      "2020年12月14日\t260.86\t256.03\t260.32\t256.03\t18369900.00\t256.03\t\n",
      "2020年12月15日\t255.68\t252.30\t255.34\t255.11\t16595600.00\t255.11\t\n",
      "2020年12月16日\t263.18\t257.04\t257.74\t261.89\t15804800.00\t261.89\t\n",
      "2020年12月17日\t264.85\t260.20\t264.70\t264.43\t14306600.00\t264.43\t\n",
      "2020年12月18日\t264.90\t259.20\t263.90\t260.00\t15981800.00\t260.00\t\n",
      "2020年12月21日\t260.46\t254.50\t255.17\t260.43\t10901800.00\t260.43\t\n",
      "2020年12月22日\t258.34\t255.41\t257.87\t255.83\t11468400.00\t255.83\t\n",
      "2020年12月23日\t257.35\t252.53\t255.50\t256.18\t10729200.00\t256.18\t\n",
      "2020年12月24日\t229.90\t211.23\t228.24\t222.00\t141830000.00\t222.00\t\n",
      "2020年12月28日\t224.99\t215.32\t216.88\t222.36\t73512100.00\t222.36\t\n",
      "2020年12月29日\t239.19\t229.60\t231.76\t236.26\t69715900.00\t236.26\t\n",
      "2020年12月30日\t243.39\t234.65\t243.35\t238.39\t44812300.00\t238.39\t\n",
      "2020年12月31日\t238.92\t231.03\t237.46\t232.73\t23451800.00\t232.73\t\n",
      "2\n",
      "['Date', 'High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close']\n",
      "[xldate:43833.0, number:218.2030029296875, number:216.0099945068359, number:216.3500061035156, number:217.0]\n"
     ]
    }
   ],
   "source": [
    "import xlrd\n",
    "\n",
    "# 打开Excel文件并创建Book对象（工作簿）\n",
    "wb = xlrd.open_workbook('excel/阿里巴巴2020年股票数据.xls')\n",
    "# 获取所有工作表名称列表\n",
    "sheetnames = wb.sheet_names()\n",
    "print(sheetnames)\n",
    "\n",
    "# 获取指定工作表Sheet对象\n",
    "sheet = wb.sheet_by_name(sheetnames[0])\n",
    "# 获取工作表的行数和列数\n",
    "print(sheet.nrows, sheet.ncols)\n",
    "\n",
    "for row in range(sheet.nrows):\n",
    "    for col in range(sheet.ncols):\n",
    "        # 通过Sheet对象的cell方法获取指定Cell对象（单元格）\n",
    "        # 通过Cell对象的value属性获取单元格中的值\n",
    "        value = sheet.cell(row, col).value\n",
    "        # 对除首行外的其他行进行数据格式化处理\n",
    "        if row > 0:\n",
    "            # 第1列的xldate类型先转成元组再格式化为“年月日”的格式\n",
    "            if col == 0:\n",
    "                # xldate_as_tuple函数的第二个参数只有0和1两个取值\n",
    "                # 其中0代表以1900-01-01为基准的日期，1代表以1904-01-01为基准的日期\n",
    "                value = xlrd.xldate_as_tuple(value, 0)\n",
    "                value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日'\n",
    "            # 其他列的number类型处理成小数点后保留两位有效数字的浮点数\n",
    "            else:\n",
    "                value = f'{value:.2f}'\n",
    "        print(value, end='\\t')\n",
    "    print()\n",
    "    \n",
    "# 获取最后一个单元格的数据类型\n",
    "# 0 - 空值，1 - 字符串，2 - 数字，3 - 日期，4 - 布尔，5 - 错误\n",
    "last_cell_type = sheet.cell_type(sheet.nrows - 1, sheet.ncols - 1)\n",
    "print(last_cell_type)\n",
    "\n",
    "# 获取表头（第一行）列表\n",
    "print(sheet.row_values(0))\n",
    "# 获取指定行指定列范围的数据（列表）\n",
    "# 第一个参数代表行索引，第二个和第三个参数代表列的开始（含）和结束（不含）索引\n",
    "print(sheet.row_slice(3, 0, 5))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe2afd41-4dba-4e49-a027-933077e31b9d",
   "metadata": {},
   "source": [
    "### 写入excel文件\n",
    "\n",
    "写入 Excel 文件可以通过xlwt 模块的Workbook类创建工作簿对象，通过工作簿对象的add_sheet方法可以添加工作表，通过工作表对象的write方法可以向指定单元格中写入数据，最后通过工作簿对象的save方法将工作簿写入到指定的文件或内存中。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "bcdd2e59-2d61-4927-aa70-d678fdae37ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[59, 71, 74], [56, 74, 98], [68, 74, 50], [69, 70, 65], [85, 63, 58]]\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import xlwt\n",
    "\n",
    "student_names = ['关羽', '张飞', '赵云', '马超', '黄忠']\n",
    "scores = [\n",
    "    [random.randrange(50, 101) for _ in range(3)] # 每个人三门科目的成绩\n",
    "    for _ in range(5) # 创建五条数据\n",
    "]\n",
    "print(scores)\n",
    "\n",
    "# 创建工作簿对象（Workbook），excel文件\n",
    "wb = xlwt.Workbook()\n",
    "\n",
    "# 创建工作表对象（Worksheet）\n",
    "sheet = wb.add_sheet('一年级二班')\n",
    "\n",
    "# 添加表头数据\n",
    "titles = ('姓名', '语文', '数学', '英语')\n",
    "for index, title in enumerate(titles):\n",
    "    # 在第0行的单元格中写入表头，每次循环填写一个单元格\n",
    "    sheet.write(0, index, title)\n",
    "# 将学生姓名和考试成绩写入单元格\n",
    "for row in range(len(scores)):\n",
    "    sheet.write(row + 1, 0, student_names[row])\n",
    "    for col in range(len(scores[row])):\n",
    "        sheet.write(row + 1, col + 1, scores[row][col])\n",
    "# 保存Excel工作簿\n",
    "wb.save('excel/考试成绩表.xls')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0476817f-61df-45be-b32e-78576cb52337",
   "metadata": {},
   "source": [
    "### 调整单元格样式\n",
    "在写Excel文件时，我们还可以为单元格设置样式，主要包括字体（Font）、对齐方式（Alignment）、边框（Border）和背景（Background）的设置，xlwt对这几项设置都封装了对应的类来支持。要设置单元格样式需要首先创建一个XFStyle对象，再通过该对象的属性对字体、对齐方式、边框等进行设定，例如在上面的例子中，如果希望将表头单元格的背景色修改为黄色，可以按照如下的方式进行操作。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "63f9c06e-aec6-4863-8c95-59ce187fe69d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[76, 80, 57], [98, 56, 83], [82, 97, 92], [74, 60, 94], [61, 96, 54]]\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import xlwt\n",
    "\n",
    "student_names = ['关羽', '张飞', '赵云', '马超', '黄忠']\n",
    "scores = [\n",
    "    [random.randrange(50, 101) for _ in range(3)] # 每个人三门科目的成绩\n",
    "    for _ in range(5) # 创建五条数据\n",
    "]\n",
    "print(scores)\n",
    "\n",
    "# 创建工作簿对象（Workbook），excel文件\n",
    "wb = xlwt.Workbook()\n",
    "\n",
    "# 创建工作表对象（Worksheet）\n",
    "sheet = wb.add_sheet('一年级二班')\n",
    "\n",
    "# 设置表头样式\n",
    "header_style = xlwt.XFStyle()\n",
    "pattern = xlwt.Pattern()\n",
    "pattern.pattern = xlwt.Pattern.SOLID_PATTERN\n",
    "# 0 - 黑色、1 - 白色、2 - 红色、3 - 绿色、4 - 蓝色、5 - 黄色、6 - 粉色、7 - 青色\n",
    "pattern.pattern_fore_colour = 0 # 单元格填充色为黑色\n",
    "header_style.pattern = pattern\n",
    "\n",
    "# 设置表头字体\n",
    "font = xlwt.Font()\n",
    "# 字体名称\n",
    "font.name = '华文楷体'\n",
    "# 字体大小（20是基准单位，18表示18px）\n",
    "font.height = 20 * 18\n",
    "# 是否使用粗体\n",
    "font.bold = True\n",
    "# 是否使用斜体\n",
    "font.italic = False\n",
    "# 字体颜色\n",
    "font.colour_index = 1\n",
    "header_style.font = font\n",
    "\n",
    "# 设置表头垂直居中\n",
    "align = xlwt.Alignment()\n",
    "# 垂直方向的对齐方式\n",
    "align.vert = xlwt.Alignment.VERT_CENTER\n",
    "# 水平方向的对齐方式\n",
    "align.horz = xlwt.Alignment.HORZ_CENTER\n",
    "header_style.alignment = align\n",
    "\n",
    "# 添加表头边框\n",
    "borders = xlwt.Borders()\n",
    "props = (\n",
    "    ('top', 'top_colour'), ('right', 'right_colour'),\n",
    "    ('bottom', 'bottom_colour'), ('left', 'left_colour')\n",
    ")\n",
    "# 通过循环对四个方向的边框样式及颜色进行设定\n",
    "for position, color in props:\n",
    "    # 使用setattr内置函数动态给对象指定的属性赋值\n",
    "    setattr(borders, position, xlwt.Borders.DASHED)\n",
    "    setattr(borders, color, 5)\n",
    "header_style.borders = borders\n",
    "\n",
    "# 添加表头数据\n",
    "# 设置行高为40px\n",
    "sheet.row(0).set_style(xlwt.easyxf(f'font:height {20 * 40}'))\n",
    "titles = ('姓名', '语文', '数学', '英语')\n",
    "for index, title in enumerate(titles):\n",
    "    # 设置列宽为200px\n",
    "    sheet.col(index).width = 20 * 200\n",
    "    # 设置单元格的数据和样式\n",
    "    sheet.write(0, index, title, header_style)\n",
    "\n",
    "    \n",
    "# 将学生姓名和考试成绩写入单元格\n",
    "for row in range(len(scores)):\n",
    "    sheet.write(row + 1, 0, student_names[row])\n",
    "    for col in range(len(scores[row])):\n",
    "        sheet.write(row + 1, col + 1, scores[row][col])\n",
    "# 保存Excel工作簿\n",
    "wb.save('excel/考试成绩表2.xls')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "171582f4-0d14-4e75-97a0-baa009a89ed2",
   "metadata": {},
   "source": [
    "### 公式计算\n",
    "\n",
    "我们可以先使用xlrd读取Excel文件夹，然后通过xlutils三方库提供的copy函数将读取到的Excel文件转成Workbook对象进行写操作，在调用write方法时，可以将一个Formula对象写入单元格。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2705e1d8-e1bb-4cd2-b719-fc664a161289",
   "metadata": {},
   "outputs": [],
   "source": [
    "import xlrd\n",
    "import xlwt\n",
    "from xlutils.copy import copy\n",
    "\n",
    "wb_for_read = xlrd.open_workbook('excel/阿里巴巴2020年股票数据.xls')\n",
    "sheet1 = wb_for_read.sheet_by_index(0)\n",
    "nrows, ncols = sheet1.nrows, sheet1.ncols\n",
    "wb_for_write = copy(wb_for_read)\n",
    "sheet2 = wb_for_write.get_sheet(0)\n",
    "sheet2.write(nrows, 4, xlwt.Formula(f'average(E2:E{nrows})'))\n",
    "sheet2.write(nrows, 6, xlwt.Formula(f'sum(G2:G{nrows})'))\n",
    "wb_for_write.save('excel/阿里巴巴2020年股票数据汇总2.xls')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed534353-09e2-4cd1-883d-cb064126ad8c",
   "metadata": {},
   "source": [
    "## xlsx文件\n",
    "\n",
    "### 读取文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "859c2f28-8030-4e68-98d2-b68143f9515f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['股票数据', 'Sheet3']\n",
      "A1:G255\n",
      "255 7\n",
      "216.5399932861328\n",
      "216.5399932861328\n",
      "232.7299957275391\n",
      "((<Cell '股票数据'.A2>, <Cell '股票数据'.B2>, <Cell '股票数据'.C2>), (<Cell '股票数据'.A3>, <Cell '股票数据'.B3>, <Cell '股票数据'.C3>), (<Cell '股票数据'.A4>, <Cell '股票数据'.B4>, <Cell '股票数据'.C4>), (<Cell '股票数据'.A5>, <Cell '股票数据'.B5>, <Cell '股票数据'.C5>))\n",
      "2019年12月31日\t213.6400\t210.7300\t212       \t212.1000\t6773600   \t212.1000\t\n",
      "2020年01月02日\t219.9800\t216.5400\t216.6000\t219.7700\t15873500  \t219.7700\t\n",
      "2020年01月03日\t218.2030\t216.0100\t216.3500\t217       \t8604500   \t217       \t\n",
      "2020年01月06日\t217.1600\t214.0900\t214.8900\t216.6400\t11885500  \t216.6400\t\n",
      "2020年01月07日\t218.9400\t216.6900\t217.6400\t217.6300\t9388000   \t217.6300\t\n",
      "2020年01月08日\t220.6500\t216.3200\t216.6000\t218       \t11959100  \t218       \t\n",
      "2020年01月09日\t223.0800\t220.8200\t221.5000\t221.7800\t13122500  \t221.7800\t\n",
      "2020年01月10日\t225.9600\t222.0610\t223.9000\t223.8300\t12296000  \t223.8300\t\n",
      "2020年01月13日\t231.1400\t227.0400\t228.8100\t230.4800\t17544800  \t230.4800\t\n",
      "2020年01月14日\t230.1750\t224.8800\t230.0500\t226.4900\t17266900  \t226.4900\t\n",
      "2020年01月15日\t227.8200\t224.3900\t226.6500\t225.0600\t10743400  \t225.0600\t\n",
      "2020年01月16日\t226.3300\t222.7300\t226.3000\t223.9400\t13700500  \t223.9400\t\n",
      "2020年01月17日\t228       \t225.3500\t225.9000\t227.4300\t12956200  \t227.4300\t\n",
      "2020年01月21日\t222.6000\t220.7300\t222.4500\t222.2600\t15831100  \t222.2600\t\n",
      "2020年01月22日\t225.5800\t222       \t224.6900\t222.3700\t10059600  \t222.3700\t\n",
      "2020年01月23日\t220.1300\t216.7700\t217.9300\t219.1300\t18519900  \t219.1300\t\n",
      "2020年01月24日\t219.8300\t211.3250\t218.4900\t213.7500\t18143900  \t213.7500\t\n",
      "2020年01月27日\t208.0200\t199.5000\t201.2200\t205.4700\t24574700  \t205.4700\t\n",
      "2020年01月28日\t210.9100\t207.1700\t209.7400\t210.2300\t16196700  \t210.2300\t\n",
      "2020年01月29日\t213.9800\t209.5200\t212.5600\t212.0200\t12871900  \t212.0200\t\n",
      "2020年01月30日\t209.8600\t205.0300\t207.8800\t208.5800\t14376000  \t208.5800\t\n",
      "2020年01月31日\t207.9300\t204.7280\t206.5000\t206.5900\t18181400  \t206.5900\t\n",
      "2020年02月03日\t215.0200\t208.6700\t208.6700\t213.1000\t14118800  \t213.1000\t\n",
      "2020年02月04日\t224.3800\t220.4900\t221.3500\t222.8800\t16695100  \t222.8800\t\n",
      "2020年02月05日\t226.7000\t217.5400\t226.5200\t220.2200\t15766100  \t220.2200\t\n",
      "2020年02月06日\t223.6500\t219.7800\t223.1300\t220.9000\t10790800  \t220.9000\t\n",
      "2020年02月07日\t217.8400\t214.8800\t217.4600\t216.5300\t13790300  \t216.5300\t\n",
      "2020年02月10日\t215.7700\t212.2000\t213.5000\t215.7700\t17420300  \t215.7700\t\n",
      "2020年02月11日\t220.0100\t215.2900\t219.9100\t217.2100\t16073500  \t217.2100\t\n",
      "2020年02月12日\t225.5200\t220.2100\t221.1300\t224.3100\t18671900  \t224.3100\t\n",
      "2020年02月13日\t225       \t218.9900\t220       \t220.3600\t28069700  \t220.3600\t\n",
      "2020年02月14日\t221.6400\t218.2300\t221.1000\t219.6300\t10690000  \t219.6300\t\n",
      "2020年02月18日\t220.8500\t217.5100\t218.5500\t220.5200\t12987000  \t220.5200\t\n",
      "2020年02月19日\t223.5600\t220.7500\t221.5200\t222.1400\t10798100  \t222.1400\t\n",
      "2020年02月20日\t222.5000\t214.2200\t222.5000\t218.0400\t14950100  \t218.0400\t\n",
      "2020年02月21日\t217.6000\t211.5600\t217.5400\t212.5900\t17681200  \t212.5900\t\n",
      "2020年02月24日\t207.2800\t202.5100\t203.5500\t206.1600\t19380200  \t206.1600\t\n",
      "2020年02月25日\t209.9500\t204.1000\t208.5100\t205.6100\t18132400  \t205.6100\t\n",
      "2020年02月26日\t213.0800\t206.7900\t206.8000\t208.7400\t19482100  \t208.7400\t\n",
      "2020年02月27日\t209.9700\t201.8600\t205.0100\t205.0300\t22741200  \t205.0300\t\n",
      "2020年02月28日\t208.9200\t198.5610\t198.9800\t208       \t31251100  \t208       \t\n",
      "2020年03月02日\t211.1100\t203.7560\t208.5900\t210.9800\t21542200  \t210.9800\t\n",
      "2020年03月03日\t211.3900\t202.2400\t211.0800\t207.4100\t20813800  \t207.4100\t\n",
      "2020年03月04日\t212.7000\t208.8500\t209.4900\t211.9600\t12474400  \t211.9600\t\n",
      "2020年03月05日\t215.1500\t209.1400\t210       \t211.4600\t13462900  \t211.4600\t\n",
      "2020年03月06日\t207       \t201.1000\t206.7000\t204.6400\t21700500  \t204.6400\t\n",
      "2020年03月09日\t199.8900\t193.9300\t195.6200\t197.6600\t25502600  \t197.6600\t\n",
      "2020年03月10日\t207.4500\t200.8000\t205.5300\t206.3900\t19022600  \t206.3900\t\n",
      "2020年03月11日\t203.1000\t196.1100\t201.6500\t198.9100\t18908200  \t198.9100\t\n",
      "2020年03月12日\t190.4870\t183.9300\t186.5000\t185.1000\t30247100  \t185.1000\t\n",
      "2020年03月13日\t195.9900\t187.8100\t194.9000\t194       \t23650500  \t194       \t\n",
      "2020年03月16日\t188       \t174.5000\t176.1500\t178.8500\t26628500  \t178.8500\t\n",
      "2020年03月17日\t189.3900\t179.6900\t181.2600\t184.8100\t19276500  \t184.8100\t\n",
      "2020年03月18日\t182.4100\t170       \t176       \t180       \t22054200  \t180       \t\n",
      "2020年03月19日\t187.2500\t177.3900\t179.2600\t180.8800\t20905700  \t180.8800\t\n",
      "2020年03月20日\t188.3000\t180       \t187.7400\t181.3000\t21006100  \t181.3000\t\n",
      "2020年03月23日\t178.5000\t169.9500\t175.2700\t176.3400\t22554700  \t176.3400\t\n",
      "2020年03月24日\t188.8000\t181.1800\t183.0900\t185.7500\t20801500  \t185.7500\t\n",
      "2020年03月25日\t195.1900\t184.5150\t185.8200\t188.5600\t19605200  \t188.5600\t\n",
      "2020年03月26日\t196.3200\t187.6000\t188.6400\t195.3200\t15416800  \t195.3200\t\n",
      "2020年03月27日\t192.7400\t188       \t189.9700\t188.5900\t13376400  \t188.5900\t\n",
      "2020年03月30日\t191.4800\t187.0100\t187.4800\t191.2700\t12254400  \t191.2700\t\n",
      "2020年03月31日\t196.7900\t190.6000\t192       \t194.4800\t19084800  \t194.4800\t\n",
      "2020年04月01日\t192.8700\t185.0400\t189.5000\t187.5600\t17948600  \t187.5600\t\n",
      "2020年04月02日\t191.3000\t185.6920\t186.0800\t188.9000\t13412100  \t188.9000\t\n",
      "2020年04月03日\t190.5500\t185.4100\t190.1200\t187.1100\t9483100   \t187.1100\t\n",
      "2020年04月06日\t196.8800\t192.7000\t194.7400\t196.4500\t13248700  \t196.4500\t\n",
      "2020年04月07日\t201.4500\t197.0500\t200.0500\t198       \t14934500  \t198       \t\n",
      "2020年04月08日\t198.8600\t193.8840\t198.3400\t195.9800\t13608000  \t195.9800\t\n",
      "2020年04月09日\t200.3500\t193.4000\t198.6500\t196.3700\t17821300  \t196.3700\t\n",
      "2020年04月13日\t200.3250\t195.5300\t197.4000\t199.4400\t16117900  \t199.4400\t\n",
      "2020年04月14日\t207.9700\t204.2500\t204.9500\t204.7800\t16757100  \t204.7800\t\n",
      "2020年04月15日\t209.1500\t201.3100\t204.7700\t208.1700\t10768100  \t208.1700\t\n",
      "2020年04月16日\t213.2500\t209.1200\t210.5300\t212.6600\t16353800  \t212.6600\t\n",
      "2020年04月17日\t214.9800\t208.8510\t214.9800\t209.5000\t13558500  \t209.5000\t\n",
      "2020年04月20日\t216.1000\t209.3600\t209.8700\t212.1300\t19295400  \t212.1300\t\n",
      "2020年04月21日\t212.1300\t205.0300\t209.9000\t207.3400\t14107600  \t207.3400\t\n",
      "2020年04月22日\t212       \t209.2100\t212       \t209.9600\t13471100  \t209.9600\t\n",
      "2020年04月23日\t210.5600\t203.4600\t210.2400\t205.2400\t20424000  \t205.2400\t\n",
      "2020年04月24日\t206.5000\t202.8200\t205.8900\t204.3600\t14673900  \t204.3600\t\n",
      "2020年04月27日\t207.7800\t202.0300\t207.5500\t203.6900\t17286800  \t203.6900\t\n",
      "2020年04月28日\t205.1900\t199.4070\t204.8100\t201.1500\t17203800  \t201.1500\t\n",
      "2020年04月29日\t207.0800\t202.5100\t202.9300\t206.7000\t19117800  \t206.7000\t\n",
      "2020年04月30日\t206.7000\t199.2900\t206.2500\t202.6700\t20107400  \t202.6700\t\n",
      "2020年05月01日\t197.3800\t192.8600\t195.7500\t194.4800\t22276200  \t194.4800\t\n",
      "2020年05月04日\t195       \t189.5300\t194.7600\t191.1500\t25709400  \t191.1500\t\n",
      "2020年05月05日\t198.2700\t194.2000\t196.3800\t195.0200\t22957200  \t195.0200\t\n",
      "2020年05月06日\t198.9100\t194.9300\t197.6700\t195.1700\t18598900  \t195.1700\t\n",
      "2020年05月07日\t198.0900\t194.7800\t198       \t196.4900\t16164600  \t196.4900\t\n",
      "2020年05月08日\t203.0200\t198.6800\t199.8000\t201.1900\t23819700  \t201.1900\t\n",
      "2020年05月11日\t206.6400\t202.3800\t202.7800\t205.4000\t17920700  \t205.4000\t\n",
      "2020年05月12日\t208.0500\t200.0200\t206.9500\t200.3100\t17826800  \t200.3100\t\n",
      "2020年05月13日\t204.6800\t197.9800\t203.6200\t199.4600\t22429700  \t199.4600\t\n",
      "2020年05月14日\t201.7700\t194.0300\t195.5000\t201.3000\t20025900  \t201.3000\t\n",
      "2020年05月15日\t204.4900\t200.1000\t200.7000\t203.6800\t17209500  \t203.6800\t\n",
      "2020年05月18日\t215.4700\t210.3700\t212.5000\t215.2800\t23556600  \t215.2800\t\n",
      "2020年05月19日\t220.5900\t215.1900\t216.7300\t217.2000\t21438100  \t217.2000\t\n",
      "2020年05月20日\t221.1570\t210.5800\t220       \t216.7900\t38324100  \t216.7900\t\n",
      "2020年05月21日\t214.5800\t209.5300\t211.2900\t212.1600\t29850700  \t212.1600\t\n",
      "2020年05月22日\t204.8800\t198.9900\t203.2300\t199.7000\t51979300  \t199.7000\t\n",
      "2020年05月26日\t206.8000\t201       \t205.9400\t201.7200\t28683200  \t201.7200\t\n",
      "2020年05月27日\t202.9900\t196.7500\t202.9900\t201.1800\t23605400  \t201.1800\t\n",
      "2020年05月28日\t202.3700\t197.6200\t199       \t199.4900\t18763200  \t199.4900\t\n",
      "2020年05月29日\t207.8800\t196.7000\t200       \t207.3900\t43179500  \t207.3900\t\n",
      "2020年06月01日\t207.2000\t203.9400\t205.9000\t206.5700\t16169700  \t206.5700\t\n",
      "2020年06月02日\t214.5700\t207.1700\t207.2100\t214.3300\t22485800  \t214.3300\t\n",
      "2020年06月03日\t218.9700\t213.7500\t215.6000\t218.6100\t19999500  \t218.6100\t\n",
      "2020年06月04日\t220       \t216.3200\t217.2800\t218.0400\t14962400  \t218.0400\t\n",
      "2020年06月05日\t220.5900\t218.7000\t220       \t219.5500\t11983200  \t219.5500\t\n",
      "2020年06月08日\t220.4000\t215.3300\t219.6000\t219       \t12731200  \t219       \t\n",
      "2020年06月09日\t220.7200\t216.2000\t216.3100\t220.7200\t14140100  \t220.7200\t\n",
      "2020年06月10日\t225       \t220.6000\t222       \t223.6800\t13372400  \t223.6800\t\n",
      "2020年06月11日\t219.9500\t213.5600\t218       \t215.2400\t15560300  \t215.2400\t\n",
      "2020年06月12日\t219.5000\t213.8800\t218.5000\t217.6400\t12716500  \t217.6400\t\n",
      "2020年06月15日\t217.7200\t212.7500\t214.1100\t217.0300\t17419900  \t217.0300\t\n",
      "2020年06月16日\t224.8400\t220.1000\t221       \t222.6200\t17212400  \t222.6200\t\n",
      "2020年06月17日\t225       \t222.5000\t224.4000\t224.2500\t12486700  \t224.2500\t\n",
      "2020年06月18日\t226.0300\t222.9200\t223.7400\t223.5400\t10358800  \t223.5400\t\n",
      "2020年06月19日\t226.5000\t220.0900\t226.3800\t220.6400\t19545200  \t220.6400\t\n",
      "2020年06月22日\t222.0800\t219.4450\t220.9200\t221.4100\t13303600  \t221.4100\t\n",
      "2020年06月23日\t230.2250\t224.5300\t225.1200\t228.7500\t18263400  \t228.7500\t\n",
      "2020年06月24日\t231.0300\t224.2520\t228.3000\t226.2200\t12159500  \t226.2200\t\n",
      "2020年06月25日\t224.6900\t220.8700\t224.5900\t222.1600\t14953100  \t222.1600\t\n",
      "2020年06月26日\t222.2600\t213.5000\t222.2100\t215.7100\t19340600  \t215.7100\t\n",
      "2020年06月29日\t216.5000\t211.8200\t215.0300\t215.0200\t12333000  \t215.0200\t\n",
      "2020年06月30日\t216.4300\t212.8900\t215.7400\t215.7000\t12933800  \t215.7000\t\n",
      "2020年07月01日\t216.5500\t214.7400\t215.8100\t215.9500\t11788100  \t215.9500\t\n",
      "2020年07月02日\t225.0250\t220.0600\t221.8500\t223.6000\t18128700  \t223.6000\t\n",
      "2020年07月06日\t240.4800\t232.8200\t233.3100\t240       \t33702900  \t240       \t\n",
      "2020年07月07日\t241.3000\t236.1300\t241.0100\t236.5100\t16491600  \t236.5100\t\n",
      "2020年07月08日\t258.4900\t244.0200\t244.8600\t257.6800\t39922700  \t257.6800\t\n",
      "2020年07月09日\t268       \t255.9100\t265.5500\t261.5800\t36803900  \t261.5800\t\n",
      "2020年07月10日\t261.9000\t255.7100\t260.2100\t261.0100\t20335000  \t261.0100\t\n",
      "2020年07月13日\t265.6600\t250.6800\t261.4500\t251.6700\t21568700  \t251.6700\t\n",
      "2020年07月14日\t249.7500\t241.2300\t246.5700\t248.5800\t19782600  \t248.5800\t\n",
      "2020年07月15日\t252.5000\t246.5400\t251.4800\t249.2100\t12614700  \t249.2100\t\n",
      "2020年07月16日\t245.0500\t240.7400\t241.7700\t242.5000\t18032100  \t242.5000\t\n",
      "2020年07月17日\t247.9300\t244.4800\t246.5500\t247.1400\t18742400  \t247.1400\t\n",
      "2020年07月20日\t257.6700\t252.4300\t256.4500\t254.8100\t19015000  \t254.8100\t\n",
      "2020年07月21日\t261.9200\t256.5200\t261.2100\t257.9000\t17120700  \t257.9000\t\n",
      "2020年07月22日\t256.2700\t249.6000\t255.7600\t251.7000\t19682200  \t251.7000\t\n",
      "2020年07月23日\t257.6600\t248.6900\t252.1000\t251.8800\t25712000  \t251.8800\t\n",
      "2020年07月24日\t249.4800\t241.8900\t244.9600\t249       \t17221500  \t249       \t\n",
      "2020年07月27日\t252.8700\t245.8100\t247.1100\t250.8600\t18966900  \t250.8600\t\n",
      "2020年07月28日\t251.6500\t248.5300\t251.1500\t249.0500\t9878700   \t249.0500\t\n",
      "2020年07月29日\t254.3000\t250.1000\t250.3400\t252.4500\t11493600  \t252.4500\t\n",
      "2020年07月30日\t253.8600\t249.6200\t251.7000\t252.7400\t7032900   \t252.7400\t\n",
      "2020年07月31日\t254.4000\t248.1000\t254.2000\t251.0200\t12304100  \t251.0200\t\n",
      "2020年08月03日\t260.6500\t254       \t254.0200\t257.9400\t11530300  \t257.9400\t\n",
      "2020年08月04日\t262.5600\t258.8200\t260.0800\t262.2000\t10994500  \t262.2000\t\n",
      "2020年08月05日\t265.9760\t261.7550\t263.7400\t264.9100\t10673800  \t264.9100\t\n",
      "2020年08月06日\t265.7000\t259.2000\t263.4200\t265.6800\t10359500  \t265.6800\t\n",
      "2020年08月07日\t257.7600\t247.5700\t257.4100\t252.1000\t22529600  \t252.1000\t\n",
      "2020年08月10日\t251.7500\t246.1000\t249.3400\t248.1300\t13621700  \t248.1300\t\n",
      "2020年08月11日\t252.8800\t247.8300\t251.2900\t248.4200\t10681800  \t248.4200\t\n",
      "2020年08月12日\t256.0800\t248.6800\t249.2500\t255.1900\t11112300  \t255.1900\t\n",
      "2020年08月13日\t256.9700\t252.8800\t256.3900\t253.7200\t8794500   \t253.7200\t\n",
      "2020年08月14日\t255.7700\t251.6400\t255.4900\t253.9700\t7876400   \t253.9700\t\n",
      "2020年08月17日\t257.3750\t250.0850\t253       \t256.9600\t9760000   \t256.9600\t\n",
      "2020年08月18日\t261.4200\t256.0600\t258.7100\t259.2000\t13267800  \t259.2000\t\n",
      "2020年08月19日\t261.2900\t257.3800\t260.8900\t260.5900\t14096500  \t260.5900\t\n",
      "2020年08月20日\t258.8800\t254.1800\t256.8900\t257.9700\t21460800  \t257.9700\t\n",
      "2020年08月21日\t267.4300\t258.3100\t259.0300\t265.8000\t25648200  \t265.8000\t\n",
      "2020年08月24日\t276.9700\t271.6200\t273.2400\t276.0200\t22475800  \t276.0200\t\n",
      "2020年08月25日\t289.1200\t276.0400\t278.0600\t286       \t27535500  \t286       \t\n",
      "2020年08月26日\t292.4800\t284.1000\t289.2600\t291.9600\t19530300  \t291.9600\t\n",
      "2020年08月27日\t290.2500\t282.1000\t290.1700\t284.1700\t14805800  \t284.1700\t\n",
      "2020年08月28日\t289.5000\t283.5700\t285.0900\t289       \t9681500   \t289       \t\n",
      "2020年08月31日\t289.1900\t283.6100\t288.6200\t287.0300\t13253800  \t287.0300\t\n",
      "2020年09月01日\t298       \t288.8700\t289.2000\t298       \t13797100  \t298       \t\n",
      "2020年09月02日\t299       \t289.7900\t299       \t296.0700\t12638600  \t296.0700\t\n",
      "2020年09月03日\t290.7330\t278.1600\t289       \t282.5000\t16766200  \t282.5000\t\n",
      "2020年09月04日\t283.7800\t267.3900\t279.6000\t281.3900\t15885800  \t281.3900\t\n",
      "2020年09月08日\t273.9700\t266.5900\t270.2300\t270.0200\t12734000  \t270.0200\t\n",
      "2020年09月09日\t275.6400\t270.8800\t274.4500\t273.1500\t9465700   \t273.1500\t\n",
      "2020年09月10日\t277.1000\t267.4000\t274.9000\t267.5500\t10676800  \t267.5500\t\n",
      "2020年09月11日\t274.5300\t268.1200\t272.6300\t271.6100\t9412800   \t271.6100\t\n",
      "2020年09月14日\t276.2900\t271.7600\t275.3600\t274.1000\t7883300   \t274.1000\t\n",
      "2020年09月15日\t279.1000\t274.8000\t278       \t277.9600\t8291400   \t277.9600\t\n",
      "2020年09月16日\t283.6050\t278       \t281.0300\t278.1400\t9583500   \t278.1400\t\n",
      "2020年09月17日\t275.9000\t272.3210\t273.1100\t275.7200\t8016900   \t275.7200\t\n",
      "2020年09月18日\t277.2700\t270.5500\t275.9800\t272.4100\t11753500  \t272.4100\t\n",
      "2020年09月21日\t274.2200\t266.4000\t269.1000\t273.8200\t9076400   \t273.8200\t\n",
      "2020年09月22日\t276.3200\t270.0500\t276.0200\t275.2900\t9673300   \t275.2900\t\n",
      "2020年09月23日\t277.8300\t271.5000\t275.4000\t272.9500\t7353200   \t272.9500\t\n",
      "2020年09月24日\t271.2500\t267.3340\t267.9300\t269.7300\t9562100   \t269.7300\t\n",
      "2020年09月25日\t271.8100\t264.5600\t267.5700\t271.0900\t11466600  \t271.0900\t\n",
      "2020年09月28日\t278.8400\t274.1990\t275.5300\t276.0100\t8761700   \t276.0100\t\n",
      "2020年09月29日\t279.3000\t274.9000\t275.4300\t276.9300\t7673300   \t276.9300\t\n",
      "2020年09月30日\t295       \t283.7100\t284.0100\t293.9800\t24777700  \t293.9800\t\n",
      "2020年10月01日\t295.5900\t288.2500\t295.2600\t290.0500\t16304000  \t290.0500\t\n",
      "2020年10月02日\t291.9790\t286.5100\t286.6200\t288.1700\t11482800  \t288.1700\t\n",
      "2020年10月05日\t290       \t284.8800\t289.0600\t288.2700\t17876400  \t288.2700\t\n",
      "2020年10月06日\t296.8400\t286.9100\t287.4100\t292.3900\t15860400  \t292.3900\t\n",
      "2020年10月07日\t299.5100\t292.8700\t297.9900\t296.5000\t16669300  \t296.5000\t\n",
      "2020年10月08日\t302.3000\t295.4410\t298.1100\t300.5400\t15105800  \t300.5400\t\n",
      "2020年10月09日\t302.6100\t297.7400\t298.5500\t299.7400\t11442200  \t299.7400\t\n",
      "2020年10月12日\t309.6400\t301.2850\t303.9500\t306.3400\t14780100  \t306.3400\t\n",
      "2020年10月13日\t310.0100\t303.0300\t306.3600\t308.7800\t10898500  \t308.7800\t\n",
      "2020年10月14日\t309.9600\t300.8000\t309       \t301.0400\t15157800  \t301.0400\t\n",
      "2020年10月15日\t299.8630\t292.6100\t293.8000\t299.4600\t9709900   \t299.4600\t\n",
      "2020年10月16日\t310       \t302.9500\t303.9900\t307.3100\t12338000  \t307.3100\t\n",
      "2020年10月19日\t313.8100\t303.4100\t309.8900\t305.2900\t14107300  \t305.2900\t\n",
      "2020年10月20日\t311.8000\t307.0600\t307.6000\t309.8100\t8806100   \t309.8100\t\n",
      "2020年10月21日\t314       \t307.7000\t311.7500\t307.9700\t11139700  \t307.9700\t\n",
      "2020年10月22日\t311.8500\t304.2100\t311.4600\t306.2800\t8008400   \t306.2800\t\n",
      "2020年10月23日\t310.3300\t304.0600\t307.2700\t309.9200\t6231400   \t309.9200\t\n",
      "2020年10月26日\t315.4600\t303.2000\t309.9200\t306.8700\t9350100   \t306.8700\t\n",
      "2020年10月27日\t319.3200\t305.6100\t307.7500\t317.1400\t13175900  \t317.1400\t\n",
      "2020年10月28日\t313.5000\t306       \t313.5000\t307.9400\t13644500  \t307.9400\t\n",
      "2020年10月29日\t315.5800\t308.9100\t309.4400\t312.5600\t11174500  \t312.5600\t\n",
      "2020年10月30日\t310.8300\t300.1900\t308.5500\t304.6900\t14918500  \t304.6900\t\n",
      "2020年11月02日\t311.4400\t305.3900\t310.9500\t310.8400\t11857600  \t310.8400\t\n",
      "2020年11月03日\t294.2800\t280.7800\t286.2000\t285.5700\t58132500  \t285.5700\t\n",
      "2020年11月04日\t299.1700\t285.3000\t287.7900\t295.7100\t28791200  \t295.7100\t\n",
      "2020年11月05日\t291.2500\t279.6000\t289.0900\t287.7500\t50065200  \t287.7500\t\n",
      "2020年11月06日\t300.8900\t289.7860\t291.4900\t299.9500\t25259600  \t299.9500\t\n",
      "2020年11月09日\t304       \t290.5000\t303.7700\t290.5300\t22559900  \t290.5300\t\n",
      "2020年11月10日\t280       \t264.3300\t279.9700\t266.5400\t61064000  \t266.5400\t\n",
      "2020年11月11日\t271.9200\t261.2050\t261.9200\t265.6500\t41699000  \t265.6500\t\n",
      "2020年11月12日\t271.2000\t263.0400\t271.0400\t264.3100\t27119100  \t264.3100\t\n",
      "2020年11月13日\t265.4400\t257.1700\t264.7200\t260.8400\t33942800  \t260.8400\t\n",
      "2020年11月16日\t262.5700\t257.0300\t260.4200\t258.3100\t20864200  \t258.3100\t\n",
      "2020年11月17日\t260.2800\t256.5400\t260.2800\t256.8000\t19739500  \t256.8000\t\n",
      "2020年11月18日\t258.3100\t252.5500\t257.7600\t255.8300\t28307100  \t255.8300\t\n",
      "2020年11月19日\t261.4000\t253.5600\t255       \t259.8900\t20752800  \t259.8900\t\n",
      "2020年11月20日\t272.3700\t261.9000\t263.9700\t270.7400\t34178400  \t270.7400\t\n",
      "2020年11月23日\t275.7300\t266.4110\t274.7500\t270.1100\t25317100  \t270.1100\t\n",
      "2020年11月24日\t280.6100\t272.8000\t276.2350\t279.9600\t20660500  \t279.9600\t\n",
      "2020年11月25日\t279.3300\t274.0500\t275.7000\t277.7200\t15229300  \t277.7200\t\n",
      "2020年11月27日\t278.9200\t275.6660\t278.8000\t276.4800\t9583200   \t276.4800\t\n",
      "2020年11月30日\t268.9700\t262.5200\t268.9700\t263.3600\t30476100  \t263.3600\t\n",
      "2020年12月01日\t265.6700\t261.5700\t265.4700\t264.0100\t14573100  \t264.0100\t\n",
      "2020年12月02日\t263.1000\t260.1100\t262       \t261.3200\t13919700  \t261.3200\t\n",
      "2020年12月03日\t268.6000\t263.1400\t263.7800\t266.9100\t15520500  \t266.9100\t\n",
      "2020年12月04日\t271.3000\t266.2700\t271.0200\t267.2500\t15527600  \t267.2500\t\n",
      "2020年12月07日\t265.9700\t262.6000\t265.7000\t264       \t11388700  \t264       \t\n",
      "2020年12月08日\t268.4000\t263.8700\t265.2000\t266.0900\t9447700   \t266.0900\t\n",
      "2020年12月09日\t267.9100\t263.1000\t267.5600\t263.8000\t9060700   \t263.8000\t\n",
      "2020年12月10日\t266.0900\t261.2000\t261.9900\t264.8700\t10290300  \t264.8700\t\n",
      "2020年12月11日\t265.3200\t262.5000\t264.2900\t264.5400\t7771300   \t264.5400\t\n",
      "2020年12月14日\t260.8550\t256.0300\t260.3200\t256.0300\t18369900  \t256.0300\t\n",
      "2020年12月15日\t255.6800\t252.3000\t255.3400\t255.1100\t16595600  \t255.1100\t\n",
      "2020年12月16日\t263.1800\t257.0400\t257.7400\t261.8900\t15804800  \t261.8900\t\n",
      "2020年12月17日\t264.8500\t260.2000\t264.7000\t264.4300\t14306600  \t264.4300\t\n",
      "2020年12月18日\t264.9000\t259.2000\t263.9000\t260       \t15981800  \t260       \t\n",
      "2020年12月21日\t260.4600\t254.5000\t255.1700\t260.4300\t10901800  \t260.4300\t\n",
      "2020年12月22日\t258.3400\t255.4100\t257.8700\t255.8300\t11468400  \t255.8300\t\n",
      "2020年12月23日\t257.3500\t252.5300\t255.5000\t256.1800\t10729200  \t256.1800\t\n",
      "2020年12月24日\t229.9000\t211.2300\t228.2350\t222       \t141830000 \t222       \t\n",
      "2020年12月28日\t224.9900\t215.3200\t216.8800\t222.3600\t73512100  \t222.3600\t\n",
      "2020年12月29日\t239.1900\t229.6000\t231.7600\t236.2600\t69715900  \t236.2600\t\n",
      "2020年12月30日\t243.3900\t234.6450\t243.3480\t238.3900\t44812300  \t238.3900\t\n",
      "2020年12月31日\t238.9200\t231.0270\t237.4600\t232.7300\t23451800  \t232.7300\t\n"
     ]
    }
   ],
   "source": [
    "import datetime\n",
    "\n",
    "import openpyxl\n",
    "\n",
    "# 加载一个工作簿 ---> Workbook\n",
    "wb = openpyxl.load_workbook('excel/阿里巴巴2020年股票数据.xlsx')\n",
    "# 获取工作表的名字\n",
    "print(wb.sheetnames)\n",
    "\n",
    "# 获取工作表 ---> Worksheet\n",
    "sheet = wb.worksheets[0]\n",
    "# 获得单元格的范围\n",
    "print(sheet.dimensions)\n",
    "\n",
    "# 获得行数和列数\n",
    "print(sheet.max_row, sheet.max_column)\n",
    "\n",
    "# 获取指定单元格的值\n",
    "print(sheet.cell(3, 3).value)\n",
    "print(sheet['C3'].value)\n",
    "print(sheet['G255'].value)\n",
    "\n",
    "# 获取多个单元格（嵌套元组）\n",
    "print(sheet['A2:C5'])\n",
    "\n",
    "# 读取所有单元格的数据\n",
    "for row_ch in range(2, sheet.max_row + 1):\n",
    "    for col_ch in 'ABCDEFG':\n",
    "        value = sheet[f'{col_ch}{row_ch}'].value\n",
    "        if type(value) == datetime.datetime:\n",
    "            print(value.strftime('%Y年%m月%d日'), end='\\t')\n",
    "        elif type(value) == int:\n",
    "            print(f'{value:<10d}', end='\\t')\n",
    "        elif type(value) == float:\n",
    "            print(f'{value:.4f}', end='\\t')\n",
    "        else:\n",
    "            print(value, end='\\t')\n",
    "    print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c5cbc46-c9e8-4f2b-88f7-93e93500ee92",
   "metadata": {},
   "source": [
    "openpyxl获取指定的单元格有两种方式，一种是通过cell方法，需要注意，该方法的行索引和列索引都是从1开始的，这是为了照顾用惯了 Excel 的人的习惯；另一种是通过索引运算，通过指定单元格的坐标，例如C3、G255，也可以取得对应的单元格，再通过单元格对象的value属性，就可以获取到单元格的值。可以通过类似sheet['A2:C5']或sheet['A2':'C5']这样的切片操作获取多个单元格，该操作将返回嵌套的元组，相当于获取到了多行多列。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e6ce680-7fb0-471a-9dcd-2bfe1fbf6393",
   "metadata": {},
   "source": [
    "### 写入文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "e899d585-72cf-473d-8c7c-7d5c10739b3b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "\n",
    "import openpyxl\n",
    "\n",
    "# 第一步：创建工作簿（Workbook）\n",
    "wb = openpyxl.Workbook()\n",
    "\n",
    "# 第二步：添加工作表（Worksheet）\n",
    "sheet = wb.active\n",
    "sheet.title = '期末成绩'\n",
    "\n",
    "titles = ('姓名', '语文', '数学', '英语')\n",
    "for col_index, title in enumerate(titles):\n",
    "    sheet.cell(1, col_index + 1, title)\n",
    "\n",
    "names = ('关羽', '张飞', '赵云', '马超', '黄忠')\n",
    "for row_index, name in enumerate(names):\n",
    "    sheet.cell(row_index + 2, 1, name)\n",
    "    for col_index in range(2, 5):\n",
    "        sheet.cell(row_index + 2, col_index, random.randrange(50, 101))\n",
    "\n",
    "# 第四步：保存工作簿\n",
    "wb.save('excel/考试成绩表.xlsx')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0cb72e16-ea0c-4a96-9867-1cc23db0895a",
   "metadata": {},
   "source": [
    "### 设置样式\n",
    "\n",
    "在使用openpyxl操作 Excel 时，如果要调整单元格的样式，可以直接通过单元格对象（Cell对象）的属性进行操作。单元格对象的属性包括字体（font）、对齐（alignment）、边框（border）等。在使用openpyxl时，如果需要做公式计算，可以完全按照 Excel 中的操作方式来进行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "734866a8-c6a5-49b7-b188-24fa7866e19f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import openpyxl\n",
    "from openpyxl.styles import Font, Alignment, Border, Side\n",
    "\n",
    "# 对齐方式\n",
    "alignment = Alignment(horizontal='center', vertical='center')\n",
    "# 边框线条\n",
    "side = Side(color='ff7f50', style='mediumDashed')\n",
    "\n",
    "wb = openpyxl.load_workbook('excel/考试成绩表.xlsx')\n",
    "sheet = wb.worksheets[0]\n",
    "\n",
    "# 调整行高和列宽\n",
    "sheet.row_dimensions[1].height = 30\n",
    "sheet.column_dimensions['E'].width = 120\n",
    "\n",
    "sheet['E1'] = '平均分'\n",
    "# 设置字体\n",
    "sheet.cell(1, 5).font = Font(size=18, bold=True, color='ff1493', name='华文楷体')\n",
    "# 设置对齐方式\n",
    "sheet.cell(1, 5).alignment = alignment\n",
    "# 设置单元格边框\n",
    "sheet.cell(1, 5).border = Border(left=side, top=side, right=side, bottom=side)\n",
    "for i in range(2, 7):\n",
    "    # 公式计算每个学生的平均分\n",
    "    sheet[f'E{i}'] = f'=average(B{i}:D{i})'\n",
    "    sheet.cell(i, 5).font = Font(size=12, color='4169e1', italic=True)\n",
    "    sheet.cell(i, 5).alignment = alignment\n",
    "\n",
    "wb.save('excel/考试成绩表.xlsx')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07aa799d-2a32-47b9-b1de-63c61c732eb8",
   "metadata": {},
   "source": [
    "### 生成统计图表\n",
    "\n",
    "通过openpyxl库，可以直接向 Excel 中插入统计图表，具体的做法跟在 Excel 中插入图表大体一致。我们可以创建指定类型的图表对象，然后通过该对象的属性对图表进行设置。当然，最为重要的是为图表绑定数据，即横轴代表什么，纵轴代表什么，具体的数值是多少。最后，可以将图表对象添加到表单中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "9568ea1b-67a1-46e6-8929-c3a63a8643e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "from openpyxl import Workbook\n",
    "from openpyxl.chart import BarChart, Reference\n",
    "\n",
    "wb = Workbook(write_only=True)\n",
    "sheet = wb.create_sheet()\n",
    "\n",
    "rows = [\n",
    "    ('类别', '销售A组', '销售B组'),\n",
    "    ('手机', 40, 30),\n",
    "    ('平板', 50, 60),\n",
    "    ('笔记本', 80, 70),\n",
    "    ('外围设备', 20, 10),\n",
    "]\n",
    "\n",
    "# 向表单中添加行\n",
    "for row in rows:\n",
    "    sheet.append(row)\n",
    "\n",
    "# 创建图表对象\n",
    "chart = BarChart()\n",
    "chart.type = 'col'\n",
    "chart.style = 10\n",
    "# 设置图表的标题\n",
    "chart.title = '销售统计图'\n",
    "# 设置图表纵轴的标题\n",
    "chart.y_axis.title = '销量'\n",
    "# 设置图表横轴的标题\n",
    "chart.x_axis.title = '商品类别'\n",
    "# 设置数据的范围\n",
    "data = Reference(sheet, min_col=2, min_row=1, max_row=5, max_col=3)\n",
    "# 设置分类的范围\n",
    "cats = Reference(sheet, min_col=1, min_row=2, max_row=5)\n",
    "# 给图表添加数据\n",
    "chart.add_data(data, titles_from_data=True)\n",
    "# 给图表设置分类\n",
    "chart.set_categories(cats)\n",
    "chart.shape = 4\n",
    "# 将图表添加到表单指定的单元格中\n",
    "sheet.add_chart(chart, 'A10')\n",
    "\n",
    "wb.save('excel/demo.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "67ee2d93-6c55-4c4f-b37f-2ff20b96bdae",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
